﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace ObviousCode.UI.Aspect.PluginLibrary.Interfaces
{
    public enum AspectPluginBorderBehaviour { Inflate, SetSize }
    public enum Direction { Horizontal, Vertical }
    public enum TextImageOrder { TextFirst, ImageFirst }

    public interface IUITheme
    {
        Direction Stacking { get; }
        AspectPluginBorderBehaviour BorderBehaviour { get; }
        TextImageOrder Style { get; }
    
        string Description { get; }
        string Key { get; }

        bool BorderOnUnselected { get; }
        bool BorderOnHovered { get; }
        bool BorderOnSelected { get; }
        bool BorderOnDragged { get; }

        bool ShadowOnUnselected { get; }
        bool ShadowOnHovered { get; }
        bool ShadowOnSelected { get; }
        bool ShadowOnDragged { get; }
        
        bool RoundedBorder { get; }
        float CornerRadius { get; }
        float BorderWidth { get; }

        bool DrawItemAtOriginalPositionOnDrag { get; }        
        float DraggedBorderWidth { get; }

        SizeF SetBorderSize { get; }

        Color HoverBorderColor { get; }
        Color SelectedBorderColor { get; }
        Color UnselectedBorderColor { get; }
        Color DraggedBorderColor { get; }

        Color HoverShadowColor { get; }
        Color SelectedShadowColor { get; }
        Color UnselectedShadowColor { get; }
        Color DraggedShadowColor { get; }

        Pen HoverBorderPen { get; }
        Pen SelectedBorderPen { get; }
        Pen UnselectedBorderPen { get; }
        Pen DraggedBorderPen { get; }

        SizeF BorderInflate { get; }
        PointF ShadowOffset { get; }
        float ShadowWidth { get; }

        Font LabelFont { get; }
        float StackPadding { get; }
    }
}
